package cc.rengu.redp.flowable.bizrule.commander;

import java.util.HashMap;
import java.util.Map;

/**
 * 特殊处理类实例化
 *
 * @param <T>
 * @author xushitang
 */
public abstract class AbstractSpClassCommander<T extends SpClassMember> {

    private Map<String, T> spClassMap = new HashMap<>(); //资源池


    public void initAdd(String spClassName, T t) {
        spClassMap.put(spClassName, t);
    }

    /**
     * 特殊类选择
     *
     * @param spClassName
     * @return
     */
    protected T getSpClass(String spClassName) {
        T spClass = spClassMap.get(spClassName);
        if (spClass != null) {
            return spClass;
        } else {
            return null;
        }
    }

    /**
     * 读取缓存
     * @return
     */
    public Map<String, T> getCache() {
        return spClassMap;
    }

    /**
     * 清除指定类的缓存实例
     *
     * @param spClass
     */
    public void rmFromCache(String spClass) {
        spClassMap.remove(spClass);
    }
}
